package cn.wolfcode.service;

import cn.wolfcode.domain.SeckillProduct;
import cn.wolfcode.domain.SeckillProductVo;

import java.util.List;

/**
 * Created by lanxw
 */
public interface ISeckillProductService {
    /**
     * 查询秒杀商品
     * @param time
     * @return
     */
    List<SeckillProductVo> queryByTime(Integer time);

    /**
     * 查询单个秒杀商品
     * @param time
     * @param seckillId
     * @return
     */
    SeckillProductVo find(Integer time, Long seckillId);

    /**
     * 扣减库存
     * @param seckillId
     */
    int decrStockCount(Long seckillId);

    /**
     * 从redis中获取秒杀商品列表
     * @param time
     * @return
     */
    List<SeckillProductVo> queryByTimeFromCache(Integer time);

    /**
     * 从redis中获取秒杀商品详情
     * @param time
     * @param seckillId
     * @return
     */
    SeckillProductVo findFromCache(Integer time, Long seckillId);

    /**
     * 同步预库存
     * @param time
     * @param seckillId
     */
    void syncStockCountToRedis(Integer time, Long seckillId);

    /**
     * 超时未支付订单回补库存
     * @param seckillId
     */
    void incrStocCount(Long seckillId);
}
